﻿#ifndef HASHKELLTOOL_H
#define HASHKELLTOOL_H

#include <vector>
#include <string>
#include <functional>
namespace HaskellTool {
std::vector<std::string>  words(std::string str);
typedef void (*fun1T) (std::vector<std::string> &resultList, std::string &list);

std::vector<std::string>
foldl(fun1T fun,   std::vector<std::string>& resultList, std::vector<std::string>& list);

std::vector<std::string>
foldl(fun1T fun,   std::vector<std::string>& resultList, std::vector<std::string>&& list);

std::vector<std::string>
foldl2(std::function<   void(std::vector<std::string> &resultList, std::string &list)  > fun,
       std::vector<std::string>& resultList, std::vector<std::string>& list);


std::vector<std::string>
foldl2(std::function<   void(std::vector<std::string> &resultList, std::string &list)  > fun,
       std::vector<std::string>& resultList, std::vector<std::string>&& list);

std::string
head(std::vector<std::string>&& list);

std::string
head(std::vector<std::string>& list);



}
#endif // HASHKELLTOOL_H
